<?php

require_once 'classes/Remarque.php';
require_once 'SCinterface.php';
require_once 'classes/Message.php';

/*
 * Classe de service CRUD pour manipuler les enregistrements de Remarques
 */
class SCremarque implements SCinterface{
    
    private $db;

    /**
     *Contructeur créant l'objet pour la connexion à la DB 
     */
    public function __construct() {
        $this->db = new PDO(ACA_DB_DSN, ACA_DB_USER, ACA_DB_PASS, array(PDO::MYSQL_ATTR_INIT_COMMAND => 'SET NAMES \'UTF8\''));
        $this->db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
    }

    /**
    * Ajoute une personne
    * @param Remarque Remarque à ajouter
    */
   public function ajouter($uneRemarqueAAjouter) {
       try{
           
           $query =  $this->db->prepare("INSERT INTO remarque " .
                   "(id, type, dateHeure, remarque, animal_id, personne_id) VALUES(" .
                   ":id, :type, :dateHeure, :remarque, :animal_id, :personne_id)");

           $query->execute(array(
                   'id'                => $uneRemarqueAAjouter->getId(),
                   'type'              => $uneRemarqueAAjouter->getType(),
                   'dateHeure'         => $uneRemarqueAAjouter->getDateHeure(),
                   'remarque'          => $uneRemarqueAAjouter->getRemarque(),
                   'animal_id'         => $uneRemarqueAAjouter->getAnimal_id(),
                   'personne_id'       => $uneRemarqueAAjouter->getPersonne_id()
               ));
           $uneRemarqueAAjouter->setId($this->db->lastInsertId());
               $query->closeCursor();
       }
       catch(PDOException $e)
        {
            return new Message("Remarque non ajoutée:".$e->getMessage());
        }
               return $uneRemarqueAAjouter;
   }
    /**
     * Methode permettant de modifier une personne
     * @param Remarque personne à modifier
     * @return Message
     */
    public function modifier($uneRemarqueAModifier){
        try{

            $query =  $this->db->prepare("UPDATE remarque SET ".
                "type = :type, dateHeure = :dateHeure, remarque = :remarque, animal_id = :animal_id, personne_id = :personne_id ".
                "WHERE id = :id");

            $query->execute(array(
                'type'           => $uneRemarqueAModifier->getType(),
                'dateHeure'      => $uneRemarqueAModifier->getDateHeure() ,
                'remarque'       => $uneRemarqueAModifier->getRemarque(),
                'animal_id'      => $uneRemarqueAModifier->getAnimal_id(),
                'personne_id'    => $uneRemarqueAModifier->getPersonne_id(),
                'id'             => $uneRemarqueAModifier->getId()
            ));

            $query->closeCursor();

        }
        catch(PDOException $e)
        {
            return new Message("Remarque non modifiée:".$e->getMessage());
        }
               return $uneRemarqueAModifier;
    }
    /**
     * Methode permettant de supprimer une personne
     * @param int id Remarque à supprimer
     * @return Boolean True si la remarque a été supprimée, false sinon
     */
    public function supprimer($idRemarqueASupprimer){
        $remarqueSupprimee = false;
        try{
        $query = "DELETE FROM remarque WHERE id='".$idRemarqueASupprimer."';";
                   
                $this->db->query($query);
                $remarqueSupprimee = true;
                $message = new Message("Remarque supprimée");
          
                }
        catch(PDOException $e)
        {
            $message = new Message("Remarque non supprimée:".$e->getMessage());
        }
               return $remarqueSupprimee;
    }
   
    /**
     *
     * @param Remarque remarqueALister de recherche sous forme d'objet Remarque
     * @return un tableau d'objet Remarque
     */
    public function lister($remarqueALister){
        try{
         

            $sql="SELECT * FROM remarque ";
            $sql_Where="WHERE";
            if($remarqueALister!=NULL)
            {
                if($remarqueALister->getId()!=NULL)
                    $sql_Where.=" id ='".$remarqueALister->getId()."' AND ";
                if($remarqueALister->getAnimal_id()!=NULL)
                    $sql_Where.=" animal_id = '".$remarqueALister->getAnimal_id()."' AND ";
                if($remarqueALister->getType()!=NULL)
                    $sql_Where.=" type = '".$remarqueALister->getType()."' AND ";
                if($remarqueALister->getPersonne_id()!=NULL)
                    $sql_Where.=" personne_id = '".$remarqueALister->getPersonne_id()."' AND ";
            }         


            $sql_Where = substr($sql_Where,0,-5);
            $sql.=$sql_Where." ORDER BY animal_id,type;";
            $lesRemarquesTrouvees=NULL;
            $uneRemarqueLue=NULL;
            $result=  $this->db->query($sql);
            while($row = $result->fetch())
            {   
                $uneRemarqueLue = new Remarque($row['id'],$row['type'],$row['dateHeure'],$row['remarque'],$row['animal_id'],$row['personne_id']);
               
                    $lesRemarquesTrouvees[]=$uneRemarqueLue;
            }                
        }
        catch(PDOException $e)
        {
            print($e->getMessage());
            $lesRemarquesTrouvees=NULL;
        }
        return $lesRemarquesTrouvees;
    }

  
}

?>
